package cn.tedu.oopfinal;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-10 周四 10:55
 */
/*本类用作final的入门案例*/
public class TestFinal {
    public static void main(String[] args) {
        //6.创建子类对象进行测试
        Son son=new Son();
        son.work();
        son.workOld();
        System.out.println(Father.a);
//        son.name = "有钱人";Cannot assign a value to final variable 'name'
        System.out.println("son.name = " + son.name);
                
    }
}
/*1.final表示最终，可以用来修饰类
* 但是被final修饰的类无法被继承
* 也就是没有子类，他自己就是最终类*/
//7.1使用final
//final class Father{//Cannot inherit from final 'cn.tedu.oopfinal.Father'//Son类不能继承被final修饰的Father类
class Father{
    public static final int  a = 284;
    /*final可以用来修饰成员变量，被final修饰的成员变量值不可以被修改-常量*/
    /*注意 常量在定义的时候就需要赋值，否则报错*/
    final String name="打工人";
    //7.2

//    final public void work(){'work()' cannot override 'work()' in 'cn.tedu.oopfinal.Father'; overridden method is final
    /*2.final可以用来修饰方法，被final修饰的方法是最终实现，不能被重写*/
    public void work(){
        System.out.println("Father...工薪阶层");
    }
}
class Son extends Father{
    //super.work();不能写在此处
    //5.重写 是在子类中 名字和参数列表相同
    public void work(){
        super.work();
        System.out.println("Son...打工人韭菜要用计算机打工");
    }
    public void workOld(){
        super.work();
    }
}
